The present disclosure relates to associating one or more data keyframes with a streaming broadcast, and to systems and methods for storing and distributing data keyframes to one or more subscribers of a streaming broadcast.
In the past, transferring large files over a computer network could be a lengthy and unreliable process. Instead, large files, such as files containing audio or video data, typically were downloaded from a server and a local copy was created by the receiving client system. The local copy of the file was then available for use by the client system, such as for playback of media content. Alternatively, large files were distributed to users on portable storage media, such as compact disc (“CD”) or digital versatile disc (“DVD”).
In the more recent past, increased network bandwidth and computers with greater processing power made it practical to stream content from a server to a client. Further, standardized communication protocols were developed for use by streaming applications. Additionally, the content being streamed could be adapted to comply with the requirements of a communication path, such as through use of variable encoding parameters and/or scalable image resolution.
A client system can subscribe to a streaming broadcast by submitting a request to a streaming server from which the streaming broadcast is available. For example, a user of the client system can view a web page associated with the streaming server and select a link corresponding to the desired streaming broadcast. Once the streaming broadcast has been initiated, packets of data representing the streaming content are distributed to the subscribing client over a broadcast network. The streaming content can include audio, video, data, or any combination thereof. Further, the streaming content can be accessed at the client system as the data packets are received from the streaming server. For example, playback of streaming media content can begin at a subscribing client without waiting for the entire file to be downloaded. Typically, playback of streaming media can begin after only a small percentage of the streaming media content has been stored locally (or “buffered”) by the client.
Further, a streaming broadcast can be a live broadcast or a pre-recorded broadcast. In a live broadcast, content is distributed by a streaming server to one or more subscribing clients while the information for the stream is being published to the server. For example, similar to live television, a video presentation of a live event can be captured and published to a streaming server as the event is taking place. As such, the streaming content corresponding to the live event can be presented at a subscribing client in real-time or in near real-time. A live broadcast further can be captured and stored at a streaming server in order to generate a file that can be rebroadcast at a later time.
In a pre-recorded broadcast, information associated with one or more files is provided to a streaming server as content for the streaming broadcast. Information included in the pre-recorded broadcast is not being captured and published to the streaming server during the broadcast. Similar to a live broadcast, however, a pre-recorded broadcast allows a subscribing client to begin accessing the streaming content without first downloading the one or more files being streamed. For example, a streamed file, such as a recording of a previous live broadcast, can be presented at a subscribing client system as content associated with the streamed file is received. In order to reduce the risk of disruptions, a portion of the streamed content can be buffered by the subscribing client before playback is initiated. A pre-recorded broadcast can begin at a scheduled time or on-demand in response to a request by a subscribing client.
Data for a streaming file can be stored sequentially in segments corresponding to the order in which the content will be accessed, such as by frame. For example, image data and audio data corresponding to a particular frame of a video sequence can be stored sequentially in a file such that it precedes data corresponding to a temporally subsequent frame of the same video sequence. Thus, a subscribing client can receive all of the data required to render a frame of the video sequence before it receives data associated with one or more successive frames.
Additionally, because the data required to render a frame of streaming content at a subscribing client is temporally ordered, a subscribing client can join a streaming broadcast that already is in progress. For example, a subscribing client can join a live streaming broadcast of a baseball game at any point during the game. The subscribing client thus will be able to access audio and/or video content associated with the live streaming broadcast from the present point in the game without first having to access content from an earlier portion of the game. Additionally, the subscribing client can subsequently request to access content associated with an earlier portion of a streaming broadcast that was joined in-progress, such as by requesting to access a recorded version of the previously streamed broadcast that is stored in a file.